package application.services;

import domain.model.project.Project;
import domain.model.project.ProjectDeveloper;
import domain.model.project.ProjectId;
import domain.model.project.ProjectSCM;

import java.util.List;
import java.util.Set;

/**
 * @author Gregory Boissinot
 */
public interface ApplicationService {

    List<Project> getAllProjectInfo();

    Project getProjectInfo(ProjectId projectId);

    void importProject(Project project, boolean withCIServer);

    void updateProject(ProjectId projectId, Project project, boolean updateCIServer);

    void openProject(ProjectId projectId, boolean withCIServer);

    void closeProject(ProjectId projectId, boolean withCIServer);

    void updateSCM(ProjectId projectId, ProjectSCM projectSCM, boolean withCIServer);

    void updateDevelopers(ProjectId projectId, List<ProjectDeveloper> projectDeveloperList, boolean withCIServer);

    void syncCIJobs();

    Set<String> findAllScmConnectionURL();
}
